#pragma once

#include <fstream>
#include <iostream>
#include <string>
#include <assert.h>
using namespace std;
class Util
{
public:
    static bool GetOneline(string &target, string *out, const string &sep)
    {
        int pos = target.find(sep);
        if (pos == string::npos)
        {
            return false;
        }
        *out = target.substr(0, pos);
        target.erase(0, pos + sep.size());
        return true;
    }
    static bool ReadFileContent(string &file, string *out)
    {
        // ifstream in(file);
        // if (!in.is_open())
        // {
        //     return false;
        // }
        // string line;
        // while (getline(in, line))
        // {
        //     *out += line;
        // }
        // in.close();
        int fs = FileSize(file);
        if(fs<=0)
            return false;
        ifstream in(file);
        if(!in.is_open())
            return false;
        out->resize(fs);
        in.read((char*)(out->c_str()),fs);
        in.close();
        return true;
    }
    static size_t FileSize(string &filename)
    {
        ifstream in(filename);
        if(!in.is_open())
            return -1;
        in.seekg(0, in.end);
        size_t ret = in.tellg();
        in.seekg(0, in.beg);
        in.close();
        return ret;
    }

private:
};